package two.demo1;

/**
 * @author pengyifeng
 * @version 2.0
 * @ClassName AbstractFactoryTest.java
 * @Description 工厂方法模式
 * “工厂方法模式”是对简单工厂模式的进一步抽象化，其好处是可以使系统在不修改原来代码的情况下引进新的产品，即满足开闭原则。
 * 优点：
 * 用户只需要知道具体工厂的名称就可得到所要的产品，无须知道产品的具体创建过程。
 * 灵活性增强，对于新产品的创建，只需多写一个相应的工厂类。
 * 典型的解耦框架。高层模块只需要知道产品的抽象类，无须关心其他实现类，满足迪米特法则、依赖倒置原则和里氏替换原则。
 * 缺点：
 * 类的个数容易过多，增加复杂度
 * 增加了系统的抽象性和理解难度
 * 抽象产品只能生产一种产品，此弊端可使用抽象工厂模式解决。
 * 应用场景:用户只需要找到对应的工厂，则可生产对应的产品
 * @createTime 2021年11月22日 13:37:00
 */
public class AbstractFactoryTest {
    public static void main(String[] args) {
        new ConcreteFactory1().createProduct();
        new ConcreteFactory2().createProduct();
    }
}
